/*设计一个汽车尾灯控制电路，已知汽车左右两侧各有3个尾灯，按要求控制尾灯按如下规则亮灭。
（1）汽车沿直线行驶时，两侧的指示灯全灭。
（2）右转弯时，左侧的指示灯全灭，右侧的指示灯按000，100，010，001，000循环顺序点亮。
（3）左转弯时，右侧的指示灯全灭，左侧侧的指示灯按与右侧同样的循环顺序点亮。
（4）如果在直行时刹车，两侧的指示灯全亮；如果在刹车时转弯转弯的指示灯按上述的循环顺序点亮，另一侧指示灯全亮。
*/
module turn_car(clk,rst,out,cond);
     input clk,rst;
	  output reg [5:0] out;
	  input  [2:0]cond; //0:直行；1右转弯 2：左转弯 3：直行刹车 4：刹车右转弯 5：刹车左转弯
	  reg [2:0] state;
	  parameter S0=0,S1=1,S2=2,S3=3,S4=4,S5=5;
	  
  always@(posedge clk) begin 
  if(!rst) begin state<=S0;out<=0;end
  else 
      case(cond)
		3'b000:begin out<=6'b000_000;end  //直行
		3'b001:begin case(state)    //右转弯
		               S0:begin out<=6'b000000;state<=S1;end
							S1:begin out<=6'b000100;state<=S2;end
							S2:begin out<=6'b000010;state<=S3;end
							S3:begin out<=6'b000001;state<=S4;end
							S4:begin out<=6'b000000;state<=S1;end
							default:begin out<=6'b000000;state<=S0;end
							endcase 
				 end
	   3'b010:begin case(state)    //左转弯
		               S0:begin out<=6'b000_000;state<=S1;end
							S1:begin out<=6'b100_000;state<=S2;end
							S2:begin out<=6'b010_000;state<=S3;end
							S3:begin out<=6'b001_000;state<=S4;end
							S4:begin out<=6'b000_000;state<=S1;end
							default:begin out<=6'b000_000;state<=S0;end
							endcase 
				 end
		3'b011:begin out<=6'b111_111;end  //直行刹车
      3'b100:begin case(state)    //刹车右转弯
		               S0:begin out<=6'b111_000;state<=S1;end
							S1:begin out<=6'b111_100;state<=S2;end
							S2:begin out<=6'b111_010;state<=S3;end
							S3:begin out<=6'b111_001;state<=S4;end
							S4:begin out<=6'b111_000;state<=S1;end
							default:begin out<=6'b111_000;state<=S0;end
							endcase
		       end
	   3'b101:begin case(state)    //刹车左转弯
		               S0:begin out<=6'b000_111;state<=S1;end
							S1:begin out<=6'b100_111;state<=S2;end
							S2:begin out<=6'b010_111;state<=S3;end
							S3:begin out<=6'b001_111;state<=S4;end
							S4:begin out<=6'b000_111;state<=S1;end
							default:begin out<=6'b000_111;state<=S0;end
							endcase
				 end
		default:begin out<=6'b000_000;end
		 
	endcase
 end 
endmodule	
		